package fule.com.takingpicture;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;


import com.photolibrary.base.load.PSConfig;
import com.photolibrary.base.load.PSManager;
import com.photolibrary.bean.BaseMedia;
import com.yanzhenjie.permission.AndPermission;
import com.yanzhenjie.permission.PermissionListener;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import fule.com.takingpicture.util.GlideUtil;

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.titleTv)
    TextView titleTv;
    @BindView(R.id.title_right_iv)
    ImageView titleRightIv;
    @BindView(R.id.toolbar)
    Toolbar toolbar;
    @BindView(R.id.ic_img_photo)
    ImageView icImgPhoto;
    private ArrayList<BaseMedia> medias;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        PSManager.getResult(requestCode, resultCode, data, this, new PSManager.ResultCallBack() {
            @Override
            public void formCamera(String path) {//打开相册
                GlideUtil.loadHeadImage(path).into(icImgPhoto);
               /* File file = new File(path);
                if(file.exists()) {
                    dealImageFile(file);
                }*/
            }

            @Override
            public void formSysAlbum(String path) {//打开相机
                Log.e("cheng", path);
                GlideUtil.loadHeadImage(path).into(icImgPhoto);
              /*  File file = new File(path);
                if(file.exists()) {
                    dealImageFile(file);
                }*/
            }

            @Override
            public void formMultAlbm(ArrayList<BaseMedia> list) {
                GlideUtil.loadHeadImage(list).into(icImgPhoto);

            }

            @Override
            public void forCrop(String path) {

            }
        });
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        // 只需要调用这一句，其它的交给AndPermission吧，最后一个参数是PermissionListener。
        AndPermission.onRequestPermissionsResult(requestCode, permissions, grantResults, listener);
    }

    private PermissionListener listener = new PermissionListener() {
        @Override
        public void onSucceed(int requestCode, List<String> grantedPermissions) {
            // 权限申请成功回调。
            if (requestCode == 100) {
                PSManager.of().forCamera(MainActivity.this);
            } else if (requestCode == 101) {
                PSManager.of().forAlbum(MainActivity.this);
            }
        }

        @Override
        public void onFailed(int requestCode, List<String> deniedPermissions) {
            // 权限申请失败回调。

            // 用户否勾选了不再提示并且拒绝了权限，那么提示用户到设置中授权。
            if (AndPermission.hasAlwaysDeniedPermission(MainActivity.this, deniedPermissions)) {
                // 第一种：用默认的提示语。
                AndPermission.defaultSettingDialog(MainActivity.this, 300).show();

                // 第二种：用自定义的提示语。
                // AndPermission.defaultSettingDialog(this, REQUEST_CODE_SETTING)
                // .setTitle("权限申请失败")
                // .setMessage("我们需要的一些权限被您拒绝或者系统发生错误申请失败，请您到设置页面手动授权，否则功能无法正常使用！")
                // .setPositiveButton("好，去设置")
                // .show();

                // 第三种：自定义dialog样式。
                // SettingService settingService =
                //    AndPermission.defineSettingDialog(this, REQUEST_CODE_SETTING);
                // 你的dialog点击了确定调用：
                // settingService.execute();
                // 你的dialog点击了取消调用：
                // settingService.cancel();
            }
        }
    };


    @OnClick(R.id.title_right_iv)
    public void onViewClicked(View v) {
        switch (v.getId()) {
            case R.id.title_right_iv:
                PSConfig config = new PSConfig().setUseSysAlbum(true);
                PSManager.of(config).forDialog(this, v);
                break;
        }
    }
}
